package com.itfenghuang.day03;

public class A01_接口代理方式实现Dao层 {
    /**
     * 1.传统的方式实现Dao层(mapper层的代码 怎么写)
     *      1).创建一个接口( UserMapper )
     *      2).在接口中写增删改查抽象方法 比如: User selectUser1(int id);
     *      3).创建一个普通类(UserMapperImp)实现该接口
     *          这个普通类放在mapper包下的imp包下
     *      4).在普通类中重写接口的抽象方法
     *              操作数据库的代码写在了对应的重写的方法中
     *
     *
     * 2.接口代理方式实现Dao(mapper)层
     *      1).在(数据访问层)mapper包下创建对应的接口(StudentMapper.xml)
     *          写增删改查的抽象方法
     *      2).在mapper包下创建一个映射配置文件StudentMapper.xml文件
     *          在这里写对应的sql语句
     *          规则:
     *          映射配置文件中的名称空间namespace的值必须是对应接口的全限定名
     *          映射配置文件中的增删改查标签的id属性必须和对应的接口中的对应方法的方法名相同
     *          映射配置文件中增删改查标签的parameterType属性值必须和对应接口中的对应的方法
     *          的参数类型相同
     *          在映射配置文件中标签的resultType属性值必须和对应接口中的对应方法的返回值类型相同
     *      3).创建service包(业务逻辑层)和mapper包平级
     *          1).首先创建一个业务接口  StudentService接口
     *              写增删改查的抽象方法
     *          2).在service下创建一个imp包,
     *          在imp包下创建一个普通类(StudentServiceImp),实现service中对应的接口
     *          3).StudentServiceImp类中重写接口中的抽象方法
     *              操作数据库的java代码写在重写的方法中
     *              1.加载核心配置文件
     *              2).获取SqlSession工厂对象
     *              3.获取SqlSession对象
     *              4.通过SqlSession对象获取StudentMapper接口的实现类对象
     *              5.通过对象调用对应的增删改查方法
     *              6.处理结果,释放资源
     *      4).测试
     *          创建controller包和service平级,
     *          在该包下创建文件进行测试即可
     *
     * 3.作业
     *      删除和修改
     * 4.#{}  和  ${}的区别
     *      #{} 就是域编译  使用占位符,最后调用setxxx方法赋值.避免了sql注入攻击,保证安全性
     *      ${} 执行者对象  使用字符拼接成一个sql语句, 会出现sql注入攻击
     *
     *
     *
     */
}
